Pin every workflow action to an exact current release - #4
Merged
Conversation
Both workflows were a major version behind on checkout and two majors behind on setup-uv, and carried floating tags elsewhere. - actions/checkout v6 -> v7.0.1 - astral-sh/setup-uv v7 -> v9.0.0 - actions/upload-artifact v7 -> v7.0.1 - actions/download-artifact v8 -> v8.0.1 - pypa/gh-action-pypi-publish release/v1 -> v1.14.2 The setup-uv jump crosses two majors, so its release notes decided two details rather than the version number alone. v8 stopped publishing major and minor tags on purpose: pinning to @v9 would reopen exactly the supply-chain hole they closed after tj-actions. An exact release is the only supported form now. v9's single breaking change flips `prune-cache` from true to false, which grows the Actions cache instead of trimming it and can raise cost. That default is set back explicitly, so the upgrade changes versions and nothing else. Its other breaking change, the manifest-file format, does not apply — neither workflow defines one. Both checkouts now set persist-credentials: false. Neither workflow pushes, so nothing needs the token left in .git/config. workflow.yaml only runs on a published release, so no pull request exercises it and the green check on this one says nothing about it. All three workflow files were parsed locally, and the release build job was reproduced end to end: uv build produced both artifacts including the arm64 native wheel, check_release_artifacts.py passed, and the native backend smoke test reported Metal available.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Both workflows were a major version behind on checkout, two majors behind on setup-uv, and carried floating tags elsewhere.
actions/checkoutv6v7.0.1astral-sh/setup-uvv7v9.0.0actions/upload-artifactv7v7.0.1actions/download-artifactv8v8.0.1pypa/gh-action-pypi-publishrelease/v1v1.14.2Every version read from the upstream
releases/latest, not from memory.The setup-uv jump needed its changelog, not just its version number
Crossing two majors, so I read both release notes before touching it. Two things came out of that:
v8 stopped publishing major and minor tags deliberately. Pinning to
@v9would reopen exactly the supply-chain hole they closed after the tj-actions compromise — an exact release is the only supported form now. So this is not merely a style preference here; it is the upstream's requirement.v9's single breaking change flips
prune-cachefromtruetofalse, which grows the Actions cache instead of trimming it and can raise cost. That default is set back explicitly, so this upgrade changes versions and nothing else.Their other breaking change — the
manifest-fileformat — does not apply, since neither workflow defines one.Also
Both checkouts set
persist-credentials: false. Neither workflow pushes, so nothing needs the token left in.git/config.Verification
workflow.yamlonly runs on a published release, so no pull request exercises it — the green check on this PR says nothing about the publish path. It was verified separately:uv buildproduced both artifacts, including themacosx_14_0_arm64native wheelcheck_release_artifacts.pypassed on both{'native': True, 'metal_available': True, ...}Homepage,Keywords, and description metadataThe Tests check on this PR does cover the risky half: it runs
checkout@v7.0.1andsetup-uv@v9.0.0on the samemacos-15runner and with the same inputs thatworkflow.yamluses.